// 数据存储工具箱
// 在存储封装storage，全局只有一个名字
// 封装Session Storage 因为我们希望站点里边的数据是随着浏览器的guanbi关闭而自动关闭,不会做持久存储
// 格式：Key:mall ,Value:{user:{userName:'jack',age:'30',sex:1}}

/*
    Storage封装
*/
const STORAGE_KEY = 'mall';

export default {
    // 封装几个api
    // 存储值
    setItem(key,value,module_name){
        if(module_name){
            // 取出值
            let val = this.getItem(module_name)
            val[key] = value;
            this.setItem(module_name, val)
        }else{
            let val = this.getStorage()
            // 存储值
            val[key] = value
            // 写入里面 设置值 val是一个json对象 要重新转换成字符串再写入
            window.sessionStorage.setItem(STORAGE_KEY,JSON.stringify(val))
        }
    },
    // 获取值 module_name = “mall”
    // 获取某一个模块下面的属性：user下面的userName
    getItem(key,module_name){
        if(module_name){
            // 如果module_name 进行递归
            // val返回的是一个object对象
            let val = this.getItem(module_name)
            if(val) return val[key];
        }
        // 先获取所有的信息
        // 然后获取key值
        return this.getStorage()[key];
    },
    // 获取整个数据
    getStorage(){
        // 获取浏览器的缓存信息     getItem// api
        // JSON.parse 转换json
        return JSON.parse(window.sessionStorage.getItem(STORAGE_KEY) ||  '{}');
    },
    // 清空某一个值
    clear(key,module_name){
        let val = this.getStorage();
        if(module_name){
            delete val[module_name][key];
        }else{
            delete val[key];
        }
        // 干掉后要从新写进去
        window.sessionStorage.setItem(STORAGE_KEY,JSON.stringify(val))
    }
}